package com.boot.commoncore.utils;

import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.digest.DigestUtil;
import org.apache.commons.lang3.StringUtils;

import java.nio.charset.StandardCharsets;

/**
 * AES加密工具类(对称加密)
 */
public class AESUtil {

    /**
     * 前后端规定的秘钥(必须是128位/192位/256位,对应AES123、AES192、AES256三种算法)
     */
    private static final byte[] KEYS = "javacloudbootfdc".getBytes(StandardCharsets.UTF_8);

    /**
     * aes加密
     * @param data 原始数据
     * @return 加密后的数据
     */
    public static String encryptHex(String data) {
        if (StringUtils.isNotEmpty(data)) {
            return SecureUtil.aes(KEYS).encryptHex(data);
        }
        return null;
    }

    /**
     * aes解密
     * @param data 加密后的数据
     * @return 原始数据
     * r
     */
    public static String decryptHex(String data) {
        if (StringUtils.isNotEmpty(data)) {
            return SecureUtil.aes(KEYS).decryptStr(data);
        }
        return null;
    }

    public static void main(String[] args) {
        String phone = "18888888888";
        System.out.println(encryptHex(phone));
        String password = "123456789";
        System.out.println(encryptHex(password));
        System.out.println(DigestUtil.sha256Hex(password));
        System.out.println(encryptHex("aaa123"));
    }
}
